home *** CD-ROM | disk | FTP | other *** search
Text File | 1987-03-19 | 3.4 KB | 168 lines | [TEXT/EDIT] |
- { Tickle, © Joseph Casazza, 1986 }
-
- PROGRAM tickle;
-
- USES
- SpeechIntf;
-
- CONST
- AppleMenuId = 1;
- MyMenuId = 10;
- aboutid = 3000;
-
- VAR
- Event : EventRecord;
- thehandle, OldMenu, theteehee : Handle;
- AppleMenu, MyMenu : MenuHandle;
- speechh : SpeechHandle;
- anerr : SpeechErr;
- dWindow, WhichWindow : WindowPtr;
- thedlog : dialogptr;
- dRecord : WindowRecord;
- quit : Boolean;
- drect : rect;
- MenuSelected : longint;
- ClickRgn, theMenuId, theItem, dummy, ditem, al, z : Integer;
- nameholder, titlestr, parstr : str255;
-
- PROCEDURE talkalert;
- BEGIN
- al := 0;
- ParamText(parstr, '', '', '');
- al := StopAlert(1, NIL);
- quit := true;
- END;
-
- PROCEDURE speakit;
- BEGIN
- anerr := 0;
- SpeechPitch(speechh, 440, NoChange);
- theteehee := GetResource('PHNM', 300);
- anerr := MacinTalk(speechh, theteehee);
- IF anerr <> 0 THEN
- BEGIN
- parstr := 'Error reading phonemes.';
- talkalert;
- END;
- END;
-
- PROCEDURE showabout;
- BEGIN
- thedlog := getnewdialog(aboutid, NIL, pointer(-1));
- modaldialog(NIL, ditem);
- disposdialog(thedlog);
- END;
-
- PROCEDURE printmsg;
- BEGIN
- MoveTo(30, 70);
- DrawString('I am very ticklish. Touch my keys to tickle me!');
- END;
-
- PROCEDURE maineventloop;
- BEGIN
- quit := false;
- InitCursor;
- REPEAT
- FlushEvents(everyEvent, 0);
- REPEAT
- systemtask;
- UNTIL GetNextEvent(everyevent, Event);
- BEGIN
- CASE Event.What OF
- MouseDown :
- BEGIN
- ClickRgn := FindWindow(Event.Where, WhichWindow);
- CASE ClickRgn OF
- InMenuBar :
- BEGIN
- MenuSelected := MenuSelect(Event.Where);
- theMenuId := HiWord(MenuSelected);
- theItem := LoWord(MenuSelected);
- CASE theMenuId OF
- AppleMenuId :
- IF theitem < 3 THEN
- BEGIN
- showabout;
- END
- ELSE
- BEGIN
- getitem(Applemenu, theitem, nameholder);
- dummy := opendeskacc(nameholder);
- END;
- mymenuid :
- BEGIN
- IF theItem = 1 THEN
- BEGIN
- quit := true;
- END;
- END;
- OTHERWISE
- END;
- hilitemenu(0);
- END;
- insyswindow :
- BEGIN
- systemclick(event, whichwindow);
- END;
- inContent :
- BEGIN
- IF whichwindow <> frontwindow THEN
- BEGIN
- selectwindow(whichwindow);
- END;
- END;
- OTHERWISE
- END;
- END;
- keyDown :
- BEGIN
- speakit;
- END;
- autoKey :
- BEGIN
- speakit;
- END;
- UpdateEvt :
- BEGIN
- BeginUpdate(dWindow);
- printmsg;
- EndUpdate(dWindow);
- END;
- OTHERWISE
- END;
- END;
- UNTIL quit;
- closewindow(dWindow);
- SpeechOff(speechh);
- END;
-
- PROCEDURE miscinit;
- BEGIN
- FlushEvents(everyEvent, 0);
- OldMenu := GetMenuBar;
- ClearMenuBar;
- AppleMenu := getmenu(AppleMenuId);
- InsertMenu(AppleMenu, 0);
- addresmenu(AppleMenu, 'DRVR');
- MyMenu := NewMenu(MyMenuId, 'File');
- AppendMenu(MyMenu, 'Quit');
- InsertMenu(MyMenu, 0);
- DrawMenuBar;
- SetRect(dRect, 100, 50, 450, 200);
- dWindow := NewWindow(@dRecord, dRect, 'untitled ', true, dBoxProc, NIL, false, longint(0));
- SetPort(dWindow);
- printmsg;
- anerr := 0;
- anerr := SpeechOn(noReader, speechh);
- IF anerr <> 0 THEN
- BEGIN
- parstr := 'MacinTalk cannot be opened.';
- talkalert;
- END;
- END;
-
- BEGIN
- miscinit;
- maineventloop;
- END.